package com.xyzwps.lib.express.router.ap;

import com.xyzwps.lib.openapi.element.In;
import com.xyzwps.lib.openapi.element.Schema;
import lombok.Getter;
import lombok.Setter;

public sealed interface ApiMethodArgument {

    @Getter
    final class RequestParam implements ApiMethodArgument {
        private final String name;
        private final String type; // param class canonical name

        @Setter
        private In in;
        @Setter
        private Schema schema;
        @Setter
        private String description;

        public RequestParam(String name, String type) {
            this.name = name;
            this.type = type;
        }
    }

    record Body(String type) implements ApiMethodArgument {
    }

    record Request() implements ApiMethodArgument {
    }

    record Response() implements ApiMethodArgument {
    }
}
